/**
 * jims
 */
package com.jims.master.modules.sync.dao;

import com.jims.master.common.persistence.CrudDao;
import com.jims.master.common.persistence.annotation.MyBatisDao;
import com.jims.master.common.web.impl.BaseDto;
import com.jims.master.modules.sync.entity.PriceList;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Set;


/**
 * 价表DAO接口
 * @author CTQ
 * @version 2017-02-22
 */
@MyBatisDao
public interface PriceListDao extends CrudDao<PriceList> {

    public List<PriceList> findListByParam(@Param("q") String q, @Param("clinicId") String clinicId, @Param("limit") String limit, @Param("type") String type, @Param("orgId") String orgId);

    /**
     * 获取价表数据
     * @param priceList
     * @return
     */
    public List<BaseDto> findListDto(PriceList priceList);

    /**
     * 收费类别查询价表
     * @param q
     * @param clinicId
     * @param limit
     * @param type
     * @param chargeType
     * @return
     * @author 赵宁
     */
    public List<PriceList> findListByCharge(@Param("q") String q, @Param("clinicId") String clinicId, @Param("limit") String limit, @Param("type") String type, @Param("chargeType") String chargeType, @Param("orgId") String orgId);
    /**
     * 通过诊疗项目查询价表项目
     * @param clinicId
     * @return
     */
    public List<PriceList> findListPrice(@Param("clinicId") String clinicId);

    /**
     * 根据规格，单位，项目编码确定一个价表数据
     * @param priceList
     * @return
     */
    public PriceList findPriceByParam(PriceList priceList);

    /**
     * 获取未对照医保的西药
     * @param priceList
     * @return
     */
    public List<PriceList> findNotInMedical(PriceList priceList);

    /**
     * 查询最大itemCode
     * @param orgId
     * @param itemClass
     * @return
     */
    public int getMaxItemCode(@Param("orgId") String orgId, @Param("itemClass") String itemClass);

    /**
     * 根据ID更新停止时间及删除标识
     * @param priceList
     * @return
     */
    public Integer updateById(PriceList priceList);

    /**
     * 更新价表医保类别
     * @param priceId
     * @param medicalInsuranceType
     * @return
     */
    public int updateMedInsType(@Param("priceId") String priceId, @Param("medicalInsuranceType") String medicalInsuranceType);
    /**
     * 价表导出excel数据查询
     */
    List<PriceList> findListForExport(PriceList priceList);

    /**
     * 修改拼音码
     * @param priceList
     * @return
     */
    public int updateInputCode(PriceList priceList);

    /**
     * 根据所挂号查询挂号价表
     * @param clinicId
     * @param orgId
     * @return
     */
    public List<PriceList> findListPriceByRegistId(@Param("clinicId") String clinicId, @Param("orgId") String orgId);

    /**
     * 根据所挂号查询挂号价表
     * @param itemName
     * @param orgId
     * @return
     */
    public PriceList findLeavePrice(@Param("itemName") String itemName, @Param("orgId") String orgId);

    /**
     * @Title: 根据编码和名称查询价表--导入价表诊疗对照用
     * @Description:
     * @Param:
     * @Return:
     * @Author: fengyg
     * @Date: 2017-12-19 下午 06:02
     * version: V1.0
     */
    public PriceList findByCodeName(PriceList priceList);

    /**
     * @Title: 根据item_class、item_code、item_name、item_spec、units、price、org_id查询价表信息
     * @Description:
     * @Param:
     * @Return:
     * @Author: fengyg
     * @Date: 2017-12-24 下午 04:48
     * version: V1.0
     */
    public List<PriceList> findPriceList(PriceList priceList);

    /**
     * @Title: 获取检验项目对应的诊疗项目对应的价表明细
     * @Description:
     * @Param: clinicId 诊疗项目id
     * @Return:
     * @Author: zhangpeng
     * @Date: 2018-01-26 上午 11:11
     * version: V1.0
     */
    public List<PriceList> getLabItem(@Param("clinicId") String clinicId);

    /**
     * @Title: 获取检查项目对应的诊疗项目对应的价表明细
     * @Description:
     * @Param: clinicId 诊疗项目id
     * @Return:
     * @Author: fengyg
     * @Date: 2018-03-08 上午 11:12
     * version: V1.0
     */
    public List<PriceList> getExamItem(@Param("clinicId") String clinicId);

    public String getItemId(@Param("id") String id, @Param("orgId") String orgId);


    /**
      * 根据医保code查询价表
      * @param medicalItemCode
      * @param type
      * @param orgId
      * @return com.jims.master.modules.oper.entity.PriceList
      * @author lijl
      * @date 2018/03/25 14:08
      * @throws
      */
    List<PriceList> getByMediclCode(@Param("medicalItemCode") String medicalItemCode, @Param("type") String type, @Param("orgId") String orgId);

    /**
      * 名字相同的价表数据
      * @param priceList
      * @return String
      * @author lijl
      * @date 2018/03/31 14:01
      * @throws
      */
    String findMedicalCode(PriceList priceList);

    /**
      * 获取医保编码序列数据
      * @param priceList
      * @return java.lang.String
      * @author lijl
      * @date 2018/03/31 19:07
      * @throws
      */
    String findMedicalSeqCode(PriceList priceList);

    /**
     * 检查该药品编码是否使用
     * @param medicalItemCode
     * @return
     */
    String findMedicalItemCode(@Param("medicalItemCode") String medicalItemCode);

    /**
     * 修改当前医保编码序号
     * @param medicalItemCode
     * @return
     */
    public int  updateSeqCurrentValue(@Param("medicalItemCode") String medicalItemCode, @Param("orgId") String orgId);

    /**
      * 根据诊疗项目id 和价表id 查询价表数据
      * @param clinicId
      * @param priceId
      * @return java.util.List<com.jims.master.modules.oper.entity.PriceList>
      * @author lijl
      * @date 2018/05/16 09:46
      * @throws
      */
    List<PriceList> findListPriceByClinicIdAndPriceId(@Param("clinicId") String clinicId, @Param("priceId") String priceId);

    /**
     * 药品/耗材价格启用时调用
     * @param priceIds
     * @param delFlag
     * @param startDate
     * @return
     * @author CTQ
     * @date 2018-01-31 16点53分
     */
    public int openPrice(@Param("priceIds") Set priceIds, @Param("delFlag") String delFlag, @Param("startDate") Date startDate);

}